// 给你一个 非严格递增排列 的数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
// 元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

// 思路：双指针法，slow指向已去重数组的末尾索引，fast指向当前元素索引，比较，如果不同则将fast的元素赋值给slow
// 时间复杂度：O(n)
// 空间复杂度：O(1)

function removeDuplicates(arr) {
    if (arr.length <= 1 ) {
        return arr.length
    }
    let slow = 0
    let fast = 1
    while (fast < arr.length) {
        if (arr[slow] !== arr[fast]) {
            arr[++slow] = arr[fast]
        }
        fast++
    }
    return slow + 1
}

let arr = [1, 2, 3, 3, 4, 4, 5]
console.log(removeDuplicates(arr))
console.log(arr)